home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 March / PCWMAR09.iso / Software / Freeware / NSIS 2.41 / nsis-2.41-setup.exe / Examples / TextFuncTest.nsi < prev    next >
Encoding:
Text File  |  2008-01-27  |  9.6 KB  |  445 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          Text Functions Test
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "Text Functions Test"
  9. OutFile "TextFuncTest.exe"
  10. Caption "$(^Name)"
  11. ShowInstDetails show
  12. XPStyle on
  13. RequestExecutionLevel user
  14.  
  15. Var FUNCTION
  16. Var TEMPFILE1
  17. Var TEMPFILE2
  18. Var TEMPFILE3
  19. Var HANDLE
  20. Var OUT
  21.  
  22. !include "TextFunc.nsh"
  23.  
  24. !insertmacro LineFind
  25. !insertmacro LineRead
  26. !insertmacro FileReadFromEnd
  27. !insertmacro LineSum
  28. !insertmacro FileJoin
  29. !insertmacro TextCompare
  30. !insertmacro TextCompareS
  31. !insertmacro ConfigRead
  32. !insertmacro ConfigReadS
  33. !insertmacro ConfigWrite
  34. !insertmacro ConfigWriteS
  35. !insertmacro FileRecode
  36. !insertmacro TrimNewLines
  37.  
  38. !insertmacro un.LineFind
  39. !insertmacro un.LineRead
  40. !insertmacro un.FileReadFromEnd
  41. !insertmacro un.LineSum
  42. !insertmacro un.FileJoin
  43. !insertmacro un.TextCompare
  44. !insertmacro un.TextCompareS
  45. !insertmacro un.ConfigRead
  46. !insertmacro un.ConfigReadS
  47. !insertmacro un.ConfigWrite
  48. !insertmacro un.ConfigWriteS
  49. !insertmacro un.FileRecode
  50. !insertmacro un.TrimNewLines
  51.  
  52.  
  53.  
  54. ;############### INSTALL ###############
  55.  
  56. !define StackVerificationStart `!insertmacro StackVerificationStart`
  57. !macro StackVerificationStart _FUNCTION
  58.     StrCpy $FUNCTION ${_FUNCTION}
  59.     Call StackVerificationStart
  60. !macroend
  61.  
  62. !define StackVerificationEnd `!insertmacro StackVerificationEnd`
  63. !macro StackVerificationEnd
  64.     Call StackVerificationEnd
  65. !macroend
  66.  
  67. Function StackVerificationStart
  68.     StrCpy $0 !0
  69.     StrCpy $1 !1
  70.     StrCpy $2 !2
  71.     StrCpy $3 !3
  72.     StrCpy $4 !4
  73.     StrCpy $5 !5
  74.     StrCpy $6 !6
  75.     StrCpy $7 !7
  76.     StrCpy $8 !8
  77.     StrCpy $9 !9
  78.     StrCpy $R0 !R0
  79.     StrCpy $R1 !R1
  80.     StrCpy $R2 !R2
  81.     StrCpy $R3 !R3
  82.     StrCpy $R4 !R4
  83.     StrCpy $R5 !R5
  84.     StrCpy $R6 !R6
  85.     StrCpy $R7 !R7
  86.     StrCpy $R8 !R8
  87.     StrCpy $R9 !R9
  88. FunctionEnd
  89.  
  90. Function StackVerificationEnd
  91.     IfErrors +3
  92.     DetailPrint 'PASSED $FUNCTION no errors'
  93.     goto +2
  94.     DetailPrint 'FAILED   $FUNCTION error'
  95.  
  96.     StrCmp $0 '!0' 0 error
  97.     StrCmp $1 '!1' 0 error
  98.     StrCmp $2 '!2' 0 error
  99.     StrCmp $3 '!3' 0 error
  100.     StrCmp $4 '!4' 0 error
  101.     StrCmp $5 '!5' 0 error
  102.     StrCmp $6 '!6' 0 error
  103.     StrCmp $7 '!7' 0 error
  104.     StrCmp $8 '!8' 0 error
  105.     StrCmp $9 '!9' 0 error
  106.     StrCmp $R0 '!R0' 0 error
  107.     StrCmp $R1 '!R1' 0 error
  108.     StrCmp $R2 '!R2' 0 error
  109.     StrCmp $R3 '!R3' 0 error
  110.     StrCmp $R4 '!R4' 0 error
  111.     StrCmp $R5 '!R5' 0 error
  112.     StrCmp $R6 '!R6' 0 error
  113.     StrCmp $R7 '!R7' 0 error
  114.     StrCmp $R8 '!R8' 0 error
  115.     StrCmp $R9 '!R9' 0 error
  116.     DetailPrint 'PASSED $FUNCTION stack'
  117.     goto end
  118.  
  119.     error:
  120.     DetailPrint 'FAILED   $FUNCTION stack'
  121. ;    MessageBox MB_OKCANCEL '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}' IDOK +2
  122. ;    quit
  123.  
  124.     end:
  125. FunctionEnd
  126.  
  127.  
  128.  
  129. Section CreateTestFile
  130.     GetTempFileName $TEMPFILE1
  131.     FileOpen $HANDLE $TEMPFILE1 w
  132.     FileWrite $HANDLE '1A=a$\r$\n'
  133.     FileWrite $HANDLE '2B=b$\r$\n'
  134.     FileWrite $HANDLE '3C=c$\r$\n'
  135.     FileWrite $HANDLE '4D=d$\r$\n'
  136.     FileWrite $HANDLE '5E=e$\r$\n'
  137.     FileClose $HANDLE
  138.     GetTempFileName $TEMPFILE2
  139.     GetTempFileName $TEMPFILE3
  140. SectionEnd
  141.  
  142.  
  143. Section LineFind
  144.     ${StackVerificationStart} LineFind
  145.  
  146.     ${LineFind} '$TEMPFILE1' '/NUL' '1:-4 3 -1' 'LineFindCallback1'
  147.     IfErrors error
  148.     StrCmp $OUT '|1:2|-5|1|1A=a$\r$\n|1:2|-4|2|2B=b$\r$\n|3:3|-3|3|3C=c$\r$\n' 0 error
  149.  
  150.     StrCpy $OUT ''
  151.     SetDetailsPrint none
  152.     ${LineFind} '$TEMPFILE1' '$TEMPFILE2' '1:-1' 'LineFindCallback2'
  153.     SetDetailsPrint both
  154.     IfErrors error
  155.     StrCmp $OUT '|1:-1||1|1A=a$\r$\n|1:-1||2|4D=d$\r$\n|1:-1||3|3C=c$\r$\n|1:-1||4|2B=B$\r$\n|1:-1||5|5E=e$\r$\n' 0 error
  156.  
  157.     goto +2
  158.     error:
  159.     SetErrors
  160.  
  161.     ${StackVerificationEnd}
  162. SectionEnd
  163.  
  164. Function LineFindCallback1
  165.     StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
  166.     StrCmp $R8 3 0 +2
  167.     StrCpy $0 StopLineFind
  168.  
  169.     Push $0
  170. FunctionEnd
  171.  
  172. Function LineFindCallback2
  173.     StrCmp $R8 2 0 +2
  174.     StrCpy $R9 '4D=d$\r$\n'
  175.     StrCmp $R8 4 0 +2
  176.     StrCpy $R9 '2B=B$\r$\n'
  177.  
  178.     StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
  179.  
  180.     Push $0
  181. FunctionEnd
  182.  
  183.  
  184. Section LineRead
  185.     ${StackVerificationStart} LineRead
  186.  
  187.     ${LineRead} '$TEMPFILE1' '-1' $OUT
  188.     IfErrors error
  189.     StrCmp $OUT '5E=e$\r$\n' 0 error
  190.  
  191.     goto +2
  192.     error:
  193.     SetErrors
  194.  
  195.     ${StackVerificationEnd}
  196. SectionEnd
  197.  
  198.  
  199. Section FileReadFromEnd
  200.     ${StackVerificationStart} FileReadFromEnd
  201.  
  202.     StrCpy $OUT ''
  203.     ${FileReadFromEnd} '$TEMPFILE1' 'FileReadFromEndCallback'
  204.     IfErrors error
  205.     StrCmp $OUT '|-1|5|5E=e$\r$\n|-2|4|4D=d$\r$\n|-3|3|3C=c$\r$\n|-4|2|2B=b$\r$\n' 0 error
  206.  
  207.     goto +2
  208.     error:
  209.     SetErrors
  210.  
  211.     ${StackVerificationEnd}
  212. SectionEnd
  213.  
  214. Function FileReadFromEndCallback
  215.     StrCpy $OUT '$OUT|$7|$8|$9'
  216.     StrCmp $8 2 0 +2
  217.     StrCpy $0 StopFileReadFromEnd
  218.  
  219.     Push $0
  220. FunctionEnd
  221.  
  222.  
  223. Section LineSum
  224.     ${StackVerificationStart} LineSum
  225.  
  226.     ${LineSum} '$TEMPFILE1' $OUT
  227.     IfErrors error
  228.     StrCmp $OUT '5' 0 error
  229.  
  230.     goto +2
  231.     error:
  232.     SetErrors
  233.  
  234.     ${StackVerificationEnd}
  235. SectionEnd
  236.  
  237.  
  238. Section FileJoin
  239.     ${StackVerificationStart} FileJoin
  240.  
  241.     SetDetailsPrint none
  242.     ${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
  243.     SetDetailsPrint both
  244.  
  245.     ${StackVerificationEnd}
  246. SectionEnd
  247.  
  248.  
  249. Section TextCompare
  250.     ${StackVerificationStart} TextCompare
  251.  
  252.     StrCpy $OUT ''
  253.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'TextCompareCallback'
  254.     StrCmp $OUT '|2|4D=d$\r$\n|2|2B=b$\r$\n|4|2B=B$\r$\n|4|4D=d$\r$\n' 0 error
  255.  
  256.     StrCpy $OUT ''
  257.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastEqual' 'TextCompareCallback'
  258.     StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error
  259.  
  260.     StrCpy $OUT ''
  261.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
  262.     StrCmp $OUT '' 0 error
  263.  
  264.     StrCpy $OUT ''
  265.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
  266.     StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|4|2B=B$\r$\n|2|2B=b$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error
  267.  
  268.     goto +2
  269.     error:
  270.     SetErrors
  271.  
  272.     ${StackVerificationEnd}
  273. SectionEnd
  274.  
  275. Section TextCompareS
  276.     ${StackVerificationStart} TextCompareS
  277.  
  278.     StrCpy $OUT ''
  279.     ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
  280.     StrCmp $OUT '|||2|2B=b$\r$\n' 0 error
  281.  
  282.     StrCpy $OUT ''
  283.     ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
  284.     StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error
  285.  
  286.     goto +2
  287.     error:
  288.     SetErrors
  289.  
  290.     ${StackVerificationEnd}
  291. SectionEnd
  292.  
  293. Function TextCompareCallback
  294.     StrCpy $OUT '$OUT|$6|$7|$8|$9'
  295.  
  296.     Push $0
  297. FunctionEnd
  298.  
  299.  
  300. Section ConfigRead
  301.     ${StackVerificationStart} ConfigRead
  302.  
  303.     ${ConfigRead} '$TEMPFILE1' '3c=' $OUT
  304.     StrCmp $OUT 'c' 0 error
  305.  
  306.     ${ConfigRead} '$TEMPFILE1' '6F=' $OUT
  307.     StrCmp $OUT '' 0 error
  308.  
  309.     ${ConfigRead} '$TEMPFILE1' 'FF=' $OUT
  310.     IfErrors 0 error
  311.  
  312.     goto +2
  313.     error:
  314.     SetErrors
  315.  
  316.     ${StackVerificationEnd}
  317. SectionEnd
  318.  
  319.  
  320. Section ConfigReadS
  321.     ${StackVerificationStart} ConfigReadS
  322.  
  323.     ${ConfigReadS} '$TEMPFILE1' '3C=' $OUT
  324.     StrCmp $OUT 'c' 0 error
  325.  
  326.     ${ConfigReadS} '$TEMPFILE1' '3c=' $OUT
  327.     IfErrors 0 error
  328.     StrCmp $OUT '' 0 error
  329.  
  330.     goto +2
  331.     error:
  332.     SetErrors
  333.  
  334.     ${StackVerificationEnd}
  335. SectionEnd
  336.  
  337.  
  338. Section ConfigWrite
  339.     ${StackVerificationStart} ConfigWrite
  340.  
  341.     ${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
  342.     StrCmp $OUT 'CHANGED' 0 error
  343.  
  344.     ${ConfigWrite} '$TEMPFILE1' '2B=' '' $OUT
  345.     StrCmp $OUT 'DELETED' 0 error
  346.  
  347.     ${ConfigWrite} '$TEMPFILE1' '3c=' 'c' $OUT
  348.     StrCmp $OUT 'SAME' 0 error
  349.  
  350.     ${ConfigWrite} '$TEMPFILE1' '6F=' '*' $OUT
  351.     StrCmp $OUT 'ADDED' 0 error
  352.  
  353.     goto +2
  354.     error:
  355.     SetErrors
  356.  
  357.     ${StackVerificationEnd}
  358. SectionEnd
  359.  
  360.  
  361. Section ConfigWriteS
  362.     ${StackVerificationStart} ConfigWriteS
  363.  
  364.     ${ConfigWriteS} '$TEMPFILE1' '5e=' 'e**' $OUT
  365.     StrCmp $OUT 'ADDED' 0 error
  366.  
  367.     goto +2
  368.     error:
  369.     SetErrors
  370.  
  371.     ${StackVerificationEnd}
  372. SectionEnd
  373.  
  374.  
  375. Section FileRecode
  376.     ${StackVerificationStart} FileRecode
  377.  
  378.     ${FileRecode} '$TEMPFILE1' 'CharToOem'
  379.  
  380.     ${StackVerificationEnd}
  381. SectionEnd
  382.  
  383.  
  384. Section TrimNewLines
  385.     ${StackVerificationStart} TrimNewLines
  386.  
  387.     ${TrimNewLines} 'Text Line$\r$\n' $OUT
  388.     StrCmp $OUT 'Text Line' 0 error
  389.  
  390.     ${TrimNewLines} 'Text Line' $OUT
  391.     StrCmp $OUT 'Text Line' 0 error
  392.  
  393.     ${TrimNewLines} 'Text Line$\n' $OUT
  394.     StrCmp $OUT 'Text Line' 0 error
  395.  
  396.     goto +2
  397.     error:
  398.     SetErrors
  399.  
  400.     ${StackVerificationEnd}
  401. SectionEnd
  402.  
  403.  
  404. Section WriteUninstaller
  405.     SetDetailsPrint none
  406.     Delete $TEMPFILE1
  407.     Delete $TEMPFILE2
  408.     Delete $TEMPFILE3
  409.     SetDetailsPrint both
  410.     goto +2
  411.     WriteUninstaller '$EXEDIR\un.TextFuncTest.exe'
  412. SectionEnd
  413.  
  414.  
  415.  
  416. ;############### UNINSTALL ###############
  417.  
  418. Section un.Uninstall
  419.     ${un.LineFind} '$TEMPFILE1' '/NUL' '1:-1' 'un.LineFindCallback'
  420.     ${un.LineRead} '$TEMPFILE1' '-1' $OUT
  421.     ${un.FileReadFromEnd} '$TEMPFILE1' 'un.FileReadFromEndCallback'
  422.     ${un.LineSum} '$TEMPFILE1' $OUT
  423.     ${un.FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
  424.     ${un.TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
  425.     ${un.TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
  426.     ${un.ConfigRead} '$TEMPFILE1' '3c=' $OUT
  427.     ${un.ConfigReadS} '$TEMPFILE1' '3c=' $OUT
  428.     ${un.ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
  429.     ${un.ConfigWriteS} '$TEMPFILE1' '5E=' 'e**' $OUT
  430.     ${un.FileRecode} '$TEMPFILE1' 'CharToOem'
  431.     ${un.TrimNewLines} 'Text Line$\r$\n' $OUT
  432. SectionEnd
  433.  
  434. Function un.LineFindCallback
  435.     Push $0
  436. FunctionEnd
  437.  
  438. Function un.FileReadFromEndCallback
  439.     Push $0
  440. FunctionEnd
  441.  
  442. Function un.TextCompareCallback
  443.     Push $0
  444. FunctionEnd
  445.